package cn.qhuan.modules.service;

import cn.qhuan.modules.dtos.DocumentAuthDto;
import cn.qhuan.modules.dtos.DocumentDto;
import cn.qhuan.modules.dtos.DocumentDtoVo;
import cn.qhuan.modules.dtos.DocumentShowDto;

import cn.qhuan.modules.entity.Document;
import cn.qhuan.modules.vo.DocumentVO;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;

/**
 * @Description: 文档表
 * @Author: 司翔宇
 * @Date:   2020-12-21
 * @Version: V1.0
 */

public interface IDocumentService extends IService<Document> {
    /**
     * 带条件的分页查询
     * @param documentDto
     * @return
     */
    public Result<?> findAll(DocumentDto documentDto);

    /**
     * 审核通过或者驳回
     * @param dto
     * @param type 1审核通过  2审核不通过
     * @return
     */
    public Result<?> updateStatus(DocumentAuthDto dto, Integer type);
    /**
     * 根据专题id查询关联的文档
     * @param id
     * @return
     */
    public Result<?> findDocumentIdsBySpecialId(String id);
    /**
     * 根据展厅id查询关联的文档
     * @param id
     * @return
     */
    public Result<?> findDocumentIdsByExhiId(String id);
    /**
     * 根据类别id查询关联的文档
     * @param id
     * @return
     */
    public Result<?> findDocumentIdsByTypeId(String id);

     /**
     * 设置文档与展厅的关系
     * @param uuid
     * @param docId
     * @param exhiId
     * @return
     */
    public Result<?>  addDocToExhi(String uuid, String docId, String exhiId);

    /**
     * 设置文档与专题的关系
     * @param uuid
     * @param docId
     * @param specId
     * @return
     */
    public Result<?>  addDocToSpec(String uuid, String docId, String specId);

    /**
     * 设置文档与类别的关系
     * @param uuid
     * @param docId
     * @param typeId
     * @return
     */
    public Result<?>  addDocToType(String uuid, String docId, String typeId);

    /**
     * 设置文档与艺术家的关系
     * @param uuid
     * @param docId
     * @param artistId
     * @return
     */
    public Result<?>  addDocToArtist(String uuid, String docId, String artistId);

    /**
     * 设置文档与标签的关系
     * @param uuid
     * @param docId
     * @param tagId
     * @return
     */
    public Result<?>  addDocToTag(String uuid, String docId, String tagId);


    /**
     * 显示不显示
     * @param showDto
     * @param type 0显示 1不显示
     * @return
     */
    public Result<?> updateShowStatus(DocumentShowDto showDto, Integer type);

    /**
     * 查询所有文档数量
     * @return
     */
    public Result<?> selectDocumentCount();
    /**
     * 查询文章详情
     * @param id
     * @return
     */
    public DocumentVO findDocumentVo(Integer id);

    /**
     * 上传文档
     * @param dto
     * @return
     */
    public Result<?> addDocument(DocumentDtoVo dto);

    /**
     * 编辑文档
     * @param dto
     * @return
     */
    public Result<?> editDocument(DocumentDtoVo dto);

    /**
     * 查询下一篇文档
     * @param documentId
     * @return
     */
    public DocumentVO getAfterDocument(Integer documentId);

    /**
     * 查询上一篇文档
     * @param documentId
     * @return
     */
    public DocumentVO getPreDocument(Integer documentId);
}
